uni.getlocation h5获取定位失败后,阻塞问题

您所在的位置:网站首页 iphone app获取之后还是获取 uni.getlocation h5获取定位失败后,阻塞问题

uni.getlocation h5获取定位失败后,阻塞问题

2024-07-17 22:47| 来源: 网络整理| 查看: 265

       uni.getlocation 在H5中,如果用户未开gps定位或者gps定位信号较差时,定位会失败。这种情况uni.getlocation也不会出现报错,也不会有后续执行,导致代码阻塞,体验极差。

       解决方案1:拿不到定位或者定位失败这个时候可以尝试与后端配合使用ip定位进行定位,保证后续的执行。

       解决方案2:引导用户开启gps定位(可以直接跳转到手机gps定位界面为最好,目前没有找到合适的方法,如果您知道得话,欢迎留言讨论)。

       解决方案3:前端对uni.getLocation进行处理。因为未开定位时uni.getlocation根本不执行,所以在uni.getlocation中不管是success、fail、compelet都不会执行,这个时候我们可以添加一个宏任务。如果uni.getlocation未执行就可以通过setTimeout的执行进行返回,如果uni.getLocation执行了,就直接通过uni.getlocation进行返回。代码如下:

/** * @description 通过uni.getLocation获取相关地理信息 * @returns */ export function getLatLng() { return new Promise((resolve) => { uni.getLocation({ type: 'wgs84', timeout: 6, fail: () => { resolve({...getLocationLatLng(), errMsg: 'getLocation:fail'}) }, success: (res) => { const params = { ...res, latitude: res.latitude, longitude: res.longitude } uni.setStorageSync('LatLng', JSON.stringify(params)); resolve(params); }, }) const timer = setTimeout(() => { clearTimeout(timer) resolve({...getLocationLatLng(), errMsg: 'getLocation:fail'}) }, 6000) }) }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3